Document temporary scoping for destructuring assignments #1992
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Pursuant to rust-lang/rust#145838 (comment), I've added a note and some examples detailing how destructuring assignment expressions effectively introduce two scopes for its temporaries, whereas basic assignment expressions don't introduce any.
I've included it alongside the description of destructuring assignment desugaring, but I could see it being at home in the destructors chapter as well. I also considered adding the assigned value operand of a destructuring assignment operand to the list of temporary scopes, but it's a bit more complicated than that since it has two scopes, so I figured it would be simplest to talk directly in terms of the desugaring, where the two scopes are visible.
I've used borrowck errors to demonstrate scoping in the tests since the test scaffolding is much simpler in that case than for testing runtime drop order, but a runtime drop order comparison may help further illustrate it.